package com.example.chat.session.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.example.chat.common.constant.DigitConstant;
import com.example.chat.common.utils.ConvertUtils;
import com.example.chat.session.dao.SessionDAO;
import com.example.chat.session.pojo.dto.SessionDTO;
import com.example.chat.session.pojo.entity.SessionEntity;
import com.example.chat.session.service.SessionService;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class SessionServiceImpl implements SessionService {
    @Resource
    SessionDAO sessionDAO;

    @Override
    public Long save(SessionDTO sessionDTO) {
        SessionEntity sessionEntity = ConvertUtils.of(sessionDTO, SessionEntity.class);
        sessionDAO.insert(sessionEntity);
        return sessionEntity.getId();
    }

    @Override
    public List<SessionDTO> list(Long receptionistId) {
        QueryWrapper<SessionEntity> wrapper = new QueryWrapper<>();
        wrapper.eq(SessionEntity.TYPE, 1);
        wrapper.eq(SessionEntity.RECEPTIONIST_ID, receptionistId);
        List<SessionEntity> sessionEntities = sessionDAO.selectList(wrapper);
        return ConvertUtils.toList(sessionEntities, SessionDTO.class);
    }

    @Override
    public void updateStatus(Long visitorId, Integer status) {
        UpdateWrapper<SessionEntity> updateWrapper = new UpdateWrapper<>();
        updateWrapper.set(SessionEntity.STATUS, status);
        updateWrapper.eq(SessionEntity.VISITOR_ID, visitorId);
        sessionDAO.update(updateWrapper);
    }

}
